Các thay đổi dữ liệu hiếm khi diễn ra đơn lẻ: một giao dịch chuyển tiền phải trừ một tài khoản và cộng vào một tài khoản khác, còn một đơn hàng phải giữ chỗ tồn kho và ghi nhận thanh toán. Nếu hệ thống dừng lại giữa chừng, cơ sở dữ liệu sẽ bị bỏ lại trong trạng thái mô tả một thế giới chưa từng tồn tại. Một giao dịch chính là câu trả lời của cơ sở dữ liệu cho vấn đề đó — một chuỗi gồm một hoặc nhiều thao tác mà cơ sở dữ liệu xử lý như một đơn vị công việc duy nhất, không thể chia tách.
Tất cả hoặc không có gì
Bên trong một giao dịch, mọi thao tác đều thuộc về một kết quả duy nhất. Cơ sở dữ liệu không bao giờ để lộ ra một trạng thái hoàn tất mà trong đó chỉ một phần của giao dịch đã xảy ra. Ví dụ kinh điển là một giao dịch chuyển tiền giữa hai tài khoản ngân hàng: giảm số dư của tài khoản nguồn, rồi tăng số dư của tài khoản đích. Nếu chỉ bước đầu tiên thành công, tiền sẽ biến mất; nếu chỉ bước thứ hai thành công, tiền sẽ xuất hiện từ hư không. Gói gọn cả hai bước trong một giao dịch sẽ loại bỏ cả hai khả năng này.
Đảm bảo tất cả hoặc không có gì này được gọi là tính nguyên tử. Commit là hành động biến các thay đổi của giao dịch thành vĩnh viễn; một giao dịch không bao giờ commit sẽ không để lại dấu vết nào cả. Tính bền vững bổ sung mảnh ghép cuối cùng: một khi commit đã trả về, thay đổi vẫn tồn tại ngay cả khi máy mất điện chỉ một lát sau đó.
Giao dịch là một ranh giới
Sẽ dễ hình dung hơn nếu coi giao dịch như một ranh giới được vẽ bao quanh một nhóm câu lệnh. Trước ranh giới và sau ranh giới, dữ liệu đều thỏa mãn các quy tắc mà cấu trúc áp đặt. Bên trong ranh giới, các trạng thái trung gian tồn tại — một tài khoản đã bị ghi nợ trong khi tài khoản kia chưa được ghi có — nhưng những trạng thái đó là riêng tư đối với giao dịch. Các câu lệnh sau đó trong những phiên khác không coi chúng là sự thật.
Hai nhiệm vụ cùng lúc
Do đó, giao dịch đảm nhận hai nhiệm vụ. Nhiệm vụ thứ nhất là xử lý thất bại: nếu tiến trình gặp sự cố, kết nối bị ngắt, hoặc một câu lệnh gây ra lỗi, cơ sở dữ liệu có thể khôi phục trạng thái tồn tại trước khi giao dịch bắt đầu. Nhiệm vụ thứ hai là kiểm soát khả năng hiển thị: trong khi công việc đang được thực hiện, những người đọc khác được che chắn khỏi kết quả chưa hoàn tất. Hai nhiệm vụ này có liên quan nhưng không giống nhau — tính nguyên tử quyết định các thay đổi có được giữ lại hay không, trong khi khả năng hiển thị được điều khiển bởi tính cô lập (isolation), thiết lập kiểm soát mức độ mà các giao dịch đồng thời có thể thấy về nhau.
